/**
 * @file
 * @author  Tsin Smith <tsin.creator@gmail.com>
 *
 * @section DESCRIPTION
 *
 */

#ifndef __TSIN_RUNTIME_CHARACTERBLITWORK_HPP__
#define __TSIN_RUNTIME_CHARACTERBLITWORK_HPP__

#include <tsin/runtime/common.hpp>
#include <tsin/runtime/Work.hpp>

#include <tsin/util/Set.hpp>

namespace tsin {

        class GameRuntime;
        class Display;
        class GameViewport;
        class Player;

        class RUNTIME_DLLEXPORT CharacterEarlyBlitWork : public Work {
        public:
                CharacterEarlyBlitWork();
                virtual ~CharacterEarlyBlitWork();

                virtual void init(GameRuntime *runtime);
                virtual int run();

        private:
                GameRuntime *runtime;
                Display *display;
                GameViewport *viewport;
                Set<Player *> *player_set;
        };

        class RUNTIME_DLLEXPORT CharacterLateBlitWork : public Work {
        public:
                CharacterLateBlitWork();
                virtual ~CharacterLateBlitWork();

                virtual void init(GameRuntime *runtime);
                virtual int run();

        private:
                GameRuntime *runtime;
                Display *display;
                GameViewport *viewport;
                Set<Player *> *player_set;
        };

}

#endif /* __TSIN_RUNTIME_CHARACTERBLITWORK_HPP__ */

